7.07. Вирусы и вредоносные программы
Вирусы и вредоносные программы
Вредоносное программное обеспечение (malware — от англ. malicious software) представляет собой класс программ, разработанных с целью нанесения ущерба пользователям, устройствам или информационным системам. В отличие от легитимного ПО, вредоносные программы не несут прямой функциональной ценности для пользователя и зачастую скрываются под видом полезных или безобидных компонентов. Их цель — компрометация конфиденциальности, целостности и доступности данных, вычислительных ресурсов или сетевой инфраструктуры.
Исторически первым проявлением вредоносного ПО считается программа Creeper, появившаяся в 1971 году в сети ARPANET. Она не имела деструктивных функций, но демонстрировала возможность автономного перемещения между узлами — ключевой признак, лежащий в основе большинства современных угроз. С тех пор вредоносное ПО эволюционировало от простых экспериментальных образцов до сложных, модульных и целенаправленных систем, способных обходить многоуровневые механизмы защиты.
Данная глава посвящена классификации, функциональным особенностям и методам реализации различных типов вредоносного ПО, а также специфике их поведения в разных операционных системах и средах. Особое внимание уделено механизмам сокрытия, перехвата системных вызовов и маскировки под легитимные компоненты операционной системы.
1. Вирусы: определение и классификация
Под термином «компьютерный вирус» в классическом понимании подразумевается саморазмножающаяся программа, внедряющая свой код в другие исполняемые файлы или системные структуры с целью дальнейшего распространения. Вирус не способен к автономному запуску — он требует активации через запуск заражённого файла или выполнение определённого условия.
Основные признаки вирусов:
- Самокопирование: внедрение копии кода в другие объекты.
- Зависимость от носителя: требует запуска хост-программы.
- Условность действия: часто содержит логику активации по времени, событию или внешнему триггеру.
Современное вредоносное ПО редко ограничивается чисто вирусной моделью. Часто используется гибридный подход: вирус комбинируется с червём, трояном или руткитом для расширения функциональности.
Виды вирусов
-
Файловые вирусы
Инфицируют исполняемые файлы (обычно.exe,.dll,.com). При запуске заражённого файла срабатывает вирусный код, после чего он может заражать другие файлы в системе. Некоторые используют метод перезаписи кода, другие — добавление кода в конец или начало секции, третьи — инъекцию через ресурсы. -
Загрузочные вирусы (Boot-sector viruses)
Поражают загрузочный сектор диска (MBR или VBR). Активируются до полной загрузки операционной системы, что делает их особенно труднообнаружимыми. Современные ОС с UEFI Secure Boot значительно ограничили распространение таких угроз, но они не исчезли полностью. -
Макровирусы
Распространяются через макросы в документах (Microsoft Word, Excel, PDF с JavaScript). Активируются при открытии документа и выполнении макроса (часто с запросом разрешения от пользователя, который может быть обманут социальной инженерией). -
Полиморфные и метаморфные вирусы
Полиморфные вирусы шифруют свой код и используют переменный ключ расшифровки, что затрудняет сигнатурное обнаружение. Метаморфные вирусы не просто шифруются — они изменяют свою структуру на уровне инструкций, сохраняя логику выполнения. Это делает их крайне трудными для анализа статическими методами. -
Резидентные и нерезидентные вирусы
Резидентные вирусы загружаются в память и остаются активными в течение всего сеанса работы, перехватывая системные вызовы для заражения файлов «на лету». Нерезидентные активны только в момент запуска хоста и не остаются в памяти после завершения.
2. Фишинг: социальная инженерия как вектор атаки
Фишинг (от англ. phishing) не является вирусом в техническом смысле, но представляет собой ключевой метод доставки вредоносного ПО и кражи учетных данных. Фишинговые атаки основаны на манипуляции восприятием пользователя: жертве предлагается перейти по ссылке, открыть вложение или ввести данные на поддельном сайте, имитирующем легитимный сервис (например, банк, электронная почта, облачное хранилище).
Современные фишинговые кампании часто включают:
- Использование доменов, визуально похожих на оригинальные (typosquatting).
- Генерацию поддельных SSL-сертификатов (через Let's Encrypt и аналоги).
- Встраивание вредоносного кода в HTML-вложения или скрипты.
- Эмуляцию интерфейса двухфакторной аутентификации для перехвата временных кодов.
Фишинг остаётся наиболее эффективным вектором начальной компрометации, поскольку обходит технические меры защиты, воздействуя непосредственно на человека — наименее защищённый элемент системы.
3. Особенности вредоносного ПО в различных операционных системах
Windows
Windows остаётся основной мишенью для разработчиков вредоносного ПО по нескольким причинам:
- Высокая доля рынка настольных систем.
- Богатая экосистема легитимных приложений, которые можно имитировать.
- Сложная, но хорошо изученная архитектура API, позволяющая глубокую интеграцию.
Вредоносные программы под Windows активно используют:
- COM/ActiveX для автоматизации и выполнения кода в контексте браузера.
- Реестр Windows для обеспечения автозагрузки.
- Windows Script Host (WSH) для выполнения
.vbs,.jsскриптов без компиляции. - Scheduled Tasks для планирования периодических действий.
Особое внимание уделяется маскировке под системные процессы, что рассматривается далее.
Linux
Хотя Linux традиционно считается более защищённой системой, вредоносное ПО для неё существует и развивается, особенно в контексте серверных и встраиваемых устройств.
Особенности:
- Отсутствие единого GUI снижает эффективность фишинга, но не исключает его полностью.
- Модель прав доступа (разделение root/пользователь) усложняет системную компрометацию, но не предотвращает пользовательские атаки.
- Вредоносное ПО часто распространяется через:
- Скомпрометированные репозитории или сторонние пакеты.
- Эксплуатацию уязвимостей в веб-сервисах (например, в CMS, SSH-брут).
- Ботнеты на основе скомпрометированных IoT-устройств (Mirai и его производные).
Linux-вирусы редко используют саморазмножение в классическом смысле, но активно применяют:
- Подмену бинарных файлов (
/bin,/usr/bin). - Загрузку через
cronилиsystemdюниты. - Инъекцию в процессы через
LD_PRELOAD.
Мобильные устройства (Android / iOS)
Android — наиболее уязвимая платформа из-за открытости экосистемы и возможности установки приложений из сторонних источников (APK). Распространённые векторы:
- Троянские приложения в сторонних магазинах.
- Злоупотребление разрешениями (например,
BIND_ACCESSIBILITY_SERVICEдля автоматизации). - Скрытые майнеры и рекламные SDK с вредоносным поведением.
iOS в силу своей sandbox-архитектуры и строгой верификации App Store значительно менее подвержена классическим вирусам. Однако возможны:
- Атаки через enterprise-сертификаты.
- Эксплуатация zero-day уязвимостей (например, в WebKit).
- Фишинг через iMessage или Safari.
4. Руткиты и перехват системных функций
Руткит (rootkit) — это класс вредоносного ПО, основная цель которого состоит не в причинении прямого вреда, а в обеспечении скрытого, устойчивого присутствия в системе. Термин происходит от unix-терминов root (учётная запись с максимальными привилегиями) и kit (набор инструментов). Современные руткиты не ограничиваются Unix-подобными системами и широко распространены в Windows-среде.
Руткиты делятся на два основных типа по уровню внедрения:
4.1. User-Mode руткиты
Работают в контексте пользовательских процессов и не требуют привилегий ядра. Их основной механизм — перехват вызовов API. Это достигается следующими способами:
-
Подмена импортируемых функций в IAT (Import Address Table)
При загрузке исполняемого файла ОС заполняет таблицу адресов внешних функций из DLL. Руткит может изменить указатели в IAT, направив вызовы на собственные реализации («хуки»). -
Inline-хукинг
Непосредственная модификация кода целевой функции в памяти: первые байты заменяются на инструкцию перехода (JMP) к вредоносной подпрограмме. После выполнения логики перехвата управление может быть передано оригинальной функции. -
DLL-инъекция
Принудительная загрузка вредоносной библиотеки в адресное пространство легитимного процесса. Это позволяет исполнять код в контексте доверенного приложения (например,explorer.exeилиsvchost.exe).
Часто используемые для перехвата системные DLL в Windows:
kernel32.dll— базовые функции работы с процессами, потоками, памятью, файлами.ntdll.dll— низкоуровневые нативные вызовы ядра Windows NT (Nt* функции).user32.dll— управление окнами, вводом с клавиатуры и мыши.advapi32.dll— безопасность, реестр, службы.ws2_32.dll— сетевые сокеты (Winsock).urlmon.dll— загрузка URL, часто используется для C2-коммуникации.netapi32.dll— функции сетевого администрирования (например, для распространения по локальной сети).
Кейлоггеры — частный случай User-Mode руткита. Они перехватывают нажатия клавиш через GetAsyncKeyState, SetWindowsHookEx или прямой доступ к драйверам HID. Современные реализации избегают прямого логгирования, отправляя данные в шифрованном виде на удалённый сервер.
4.2. Kernel-Mode руткиты
Работают на уровне ядра ОС и обладают полным контролем над системой. Для их загрузки требуется:
- Подписанный драйвер (в современных версиях Windows с включённой Secure Boot и DSE).
- Эксплуатация уязвимости в ядре (например, через уязвимый легитимный драйвер).
Kernel-Mode руткиты могут:
- Скрывать процессы, файлы, сетевые соединения, драйверы.
- Подменять системные вызовы через SSDT (System Service Descriptor Table) хуки (в x86) или IRP (I/O Request Packet) перехват.
- Модифицировать структуры ядра, такие как
EPROCESS, чтобы исключить процесс из списка задач.
Поскольку такие руткиты работают на том же уровне, что и антивирусные решения, их обнаружение требует специализированных средств (например, гипервизоров безопасности вроде Hyper-V-based Virtualization-Based Security в Windows 10/11).
5. Маскировка под системные процессы и службы
Вредоносное ПО часто маскируется под легитимные системные компоненты Windows. Это позволяет:
- Избежать подозрений пользователя.
- Обойти простые правила детекции по имени процесса.
- Сохранить устойчивость при перезагрузке (через автозагрузку служб).
Распространённые цели маскировки:
| Процесс / Файл | Назначение | Как используется злоумышленниками |
|---|---|---|
svchost.exe | Хост для системных служб | Запуск вредоносной службы под этим именем; подмена реального бинарника |
lsass.exe | Управление аутентификацией | Подмена для кражи хэшей NTLM (Pass-the-Hash атаки) |
services.exe | Диспетчер служб | Создание фальшивой копии для управления вредоносными службами |
smss.exe | Сессионный менеджер | Редко, но используется в загрузочных руткитах |
conhost.exe | Хост консоли | Инъекция для скрытого запуска командной строки |
dwm.exe | Диспетчер окон рабочего стола | Используется как «тихий» контейнер для вредоносного кода |
RuntimeBroker.exe | Управление разрешениями UWP | Маскировка под UWP-процесс для обхода песочницы |
Методы подмены:
- Размещение поддельного исполняемого файла в нестандартной директории с тем же именем (например,
C:\Windows\Temp\svchost.exe). - Использование доверенной цифровой подписи, украденной в результате компрометации разработчика.
- DLL-подмена: размещение вредоносной DLL рядом с легитимным EXE, который загружает её при запуске (DLL Search Order Hijacking).
Важно: легитимные системные файлы Windows всегда находятся в строго определённых каталогах (%SystemRoot%\System32, %SystemRoot%\SysWOW64), имеют цифровую подпись Microsoft и соответствующие атрибуты (например, Protected Process Light для lsass.exe в современных версиях).
6. Скрытие файлов и обход стандартных средств просмотра
Вредоносные программы применяют разнообразные техники для сокрытия своего присутствия на диске:
6.1. Атрибуты файловой системы
- Установка атрибутов
HiddenиSystem— базовый метод, легко обнаруживается при настройке Проводника на показ скрытых файлов. - Использование альтернативных потоков данных (ADS — Alternate Data Streams) в NTFS. Файл может содержать скрытый поток (
malware.exe:hidden.txt), недоступный через стандартные утилиты.
6.2. Длинные или некорректные имена
- Использование имён длиннее 255 символов (ограничение Win32 API), что делает файл недоступным для большинства программ.
- Включение недопустимых символов (например,
C:\malware\<NUL>.exe) — ОС может не позволить создать такой файл напрямую, но при копировании из образа диска или через низкоуровневые вызовы он может существовать.
6.3. Ярлыки-обманки
- Создание ярлыка с именем
document.pdf.lnk, который визуально отображается как PDF-файл (если расширения скрыты). При запуске выполняется вредоносный скрипт. - Использование иконок, имитирующих стандартные типы файлов.
6.4. Вручную найти вредонос: практические советы
- Использовать утилиты с поддержкой Win32 Long Path (
robocopy, PowerShell с\\?\префиксом). - Просмотр ADS через
dir /RилиGet-Item -Stream *. - Анализ с помощью
Process Monitor(ProcMon) от Sysinternals: фильтрация по операциямCreateFile,RegOpenKey. - Проверка целостности системных файлов через
sfc /scannowиDISM. - Сравнение контрольных сумм системных файлов с эталонными (например, из репозитория Microsoft).
7. ActiveX и другие устаревшие, но опасные технологии
ActiveX — технология компонентного программирования, разработанная Microsoft в середине 1990-х годов. Первоначально задумывалась как способ расширения функциональности веб-приложений за счёт выполнения нативного кода в контексте браузера Internet Explorer. ActiveX-элементы представляют собой COM-объекты, которые могут иметь полный доступ к системе при соответствующем уровне доверия.
Угрозы, связанные с ActiveX:
- Выполнение произвольного кода: при загрузке веб-страницы может быть инициирована установка и запуск ActiveX-контрола без явного согласия пользователя (особенно в старых версиях IE).
- Отсутствие песочницы: в отличие от современных веб-API, ActiveX не изолирован от ОС.
- Повторное использование уязвимых контролов: многие легальные ActiveX-компоненты содержали критические уязвимости (например, переполнение буфера), которые эксплуатировались в атаках drive-by download.
Хотя Internet Explorer официально прекратил поддержку ActiveX (начиная с Microsoft Edge на базе Chromium), унаследованные системы по-прежнему используют IE в режиме совместимости, особенно в корпоративной среде. Кроме того, некоторые десктопные приложения (например, старые ERP- или BPM-системы) до сих пор полагаются на ActiveX для интеграции с оборудованием или локальными ресурсами.
Современные атаки редко используют ActiveX напрямую, но анализ исторических инцидентов показывает, что именно эта технология стала вектором для множества эпидемий (например, Conficker использовал уязвимость в ActiveX-компоненте Windows Shell).
Альтернативные устаревшие технологии с аналогичными рисками:
- Java-апплеты — выполнялись в браузере до отключения в большинстве сред.
- Microsoft Silverlight — имел ограниченную изоляцию и использовался для обхода CORS и других web-ограничений.
- VBScript / JScript через WSH — до сих пор могут запускаться из проводника при открытии
.vbs,.jsфайлов.
8. Удалённый захват компьютера и «призраки»
Термин «удалённый захват» обозначает несанкционированное получение полного контроля над устройством жертвы. Такие атаки реализуются с помощью Remote Access Trojan (RAT) — троянской программы с функциями удалённого администрирования.
Характеристики современных RAT:
- Полный контроль над клавиатурой, мышью, экраном.
- Возможность включения микрофона и веб-камеры.
- Перехват буфера обмена, скриншоты, запись сессий.
- Модульная архитектура: загрузка дополнительных плагинов по запросу.
Известные примеры: DarkComet, NjRAT, QuasarRAT, AsyncRAT. Многие из них имеют открытое исходное код и активно модифицируются злоумышленниками.
«Призраки»
Этот термин не имеет строгого технического определения, но в сообществе исследователей часто используется для обозначения вредоносных программ с крайне высоким уровнем скрытности, которые:
- Не оставляют следов на диске (fileless malware).
- Работают исключительно в оперативной памяти.
- Используют легитимные системные утилиты (например, PowerShell, WMI, regsvr32.exe) для выполнения полезной нагрузки (living-off-the-land binaries — LOLBins).
Такие угрозы особенно опасны в корпоративной среде, где стандартные решения EDR (Endpoint Detection and Response) могут не фиксировать аномалии при использовании доверенных инструментов. Обнаружение требует анализа поведения: необычные цепочки вызовов, нестандартные параметры для wmic, неожиданные PowerShell-сценарии в памяти.
9. Майнеры: скрытая эксплуатация ресурсов
Криптомайнеры — класс вредоносного ПО, использующий вычислительные ресурсы устройства для добычи криптовалют (изначально Bitcoin, впоследствии — Monero, Ethereum и др.). После снижения прибыльности PoW-майнинга для централизованных пулов, злоумышленники перешли к массовой компрометации конечных устройств.
Типы майнеров:
- Инсталлируемые: полноценные бинарники, устанавливающиеся как служба или процесс.
- Браузерные: JavaScript-скрипты (например, на базе Coinhive), выполняющие майнинг в фоне вкладки.
- Облачные: майнеры, размещённые на скомпрометированных серверах или виртуальных машинах (часто в облаках AWS, Azure).
Признаки заражения:
- Стойкое повышение загрузки CPU/GPU.
- Перегрев устройства, шум вентиляторов.
- Снижение производительности ОС.
- Неизвестные процессы в диспетчере задач с именами вроде
xmrig,cpuminer.
Современные майнеры активно применяют антианализ: проверка на виртуальную машину, отключение при обнаружении отладчика, шифрование C2-каналов.
10. Рекламное и потенциально нежелательное ПО (Adware / PUP)
Adware (рекламное ПО) изначально не предназначено для кражи данных или разрушения системы. Его цель — монетизация через показ рекламы. Однако граница между adware и вредоносным ПО размыта:
- Adware часто устанавливается без явного согласия (в комплекте с другими программами).
- Нарушает приватность: отслеживает поведение пользователя, историю браузера.
- Может понижать безопасность: отключает защиту браузера, добавляет ненадёжные сертификаты.
- Некоторые образцы внедряют бэкдоры или загружают дополнительные угрозы.
PUP (Potentially Unwanted Program) — более широкая категория, включающая:
- Панели инструментов браузера.
- Сомнительные «оптимизаторы» системы.
- Поддельные антивирусы (scareware).
Такое ПО часто распространяется через:
- Фальшивые установщики (например, «видеокодеки», «проигрыватели»).
- Рекламные сети с низкой репутацией.
- Торрент-трекеры и файлообменники.
Хотя формально PUP может быть легальным (имеет EULA), его поведение навязчиво и дезинформирует пользователя, что ставит его в серую зону этики и безопасности.
Исторические кейсы вредоносного ПО
Изучение крупных инцидентов кибербезопасности позволяет выявить эволюцию методов, тактик и целей разработчиков вредоносного ПО. Ниже рассмотрены ключевые примеры, оказавшие влияние на развитие как атакующих, так и защитных технологий.
ILOVEYOU (2000)
Тип: Червь с элементами социальной инженерии
Платформа: Windows
Вектор распространения: Вложение электронной почты (LOVE-LETTER-FOR-YOU.TXT.vbs)
Несмотря на простоту, ILOVEYOU стал одним из самых разрушительных инцидентов своего времени. Вредонос представлял собой VBScript-файл, маскирующийся под текстовый документ. При запуске скрипт:
- Перезаписывал файлы с расширениями
.jpg,.mp3и др. - Отправлял копию себя всем контактам из адресной книги Outlook.
- Загружал дополнительный компонент для кражи паролей.
Особенности:
- Использование доверия к формату «.txt» при скрытых расширениях в Windows.
- Отсутствие цифровой подписи или обфускации — полагался исключительно на человеческий фактор.
- Ущерб оценивался в миллиарды долларов; инцидент ускорил внедрение политик блокировки скриптов в корпоративных почтовых шлюзах.
Conficker (2008)
Тип: Червь с элементами ботнета и руткита
Платформа: Windows (XP–7)
Векторы: Уязвимость в RPC (MS08-067), автозапуск съёмных носителей, подбор паролей в домене
Conficker продемонстрировал высокий уровень инженерной сложности:
- Использовал шифрование и домен-генерирующий алгоритм (DGA) для связи с C2-серверами.
- Отключал службы обновления Windows и антивирусные продукты.
- Применял мутацию кода (полиморфизм) и проверку среды выполнения.
Архитектурные инновации:
- Поддержка peer-to-peer протокола для обмена командами между узлами ботнета.
- Использование цифровой подписи (украденной у Realtek) для загрузки драйверов.
- Разделение на несколько версий (A–E), каждая из которых вносила улучшения в устойчивость к анализу.
Conficker до сих пор считается образцом «профессионально разработанного» вредоносного ПО. Хотя его прямой вред был ограничен, он создал ботнет из десятков миллионов устройств.
Stuxnet (2010)
Тип: Целевая кибер-физическая атака (cyber-physical weapon)
Платформа: Windows + Siemens PLC (Programmable Logic Controller)
Векторы: Заражение через USB-носители, эксплуатация четырёх zero-day уязвимостей
Stuxnet был разработан, вероятно, государственными структурами (США и Израиль) для саботажа иранской ядерной программы. Его отличительная черта — воздействие на физическое оборудование.
Технические особенности:
- Использовал уязвимости в
lnk-файлах (CVE-2010-2568) для автозапуска с USB. - Перехватывал и модифицировал код, загружаемый в промышленные контроллеры Siemens S7.
- Подделывал данные с датчиков, чтобы скрыть разрушение центрифуг.
Stuxnet стал первым доказанным случаем, когда вредоносное ПО напрямую повлияло на инфраструктуру критического назначения. Он лег в основу концепции APT (Advanced Persistent Threat) и изменил подход к защите OT/ICS-систем.
NotPetya (2017)
Тип: Вымогательское ПО с червеподобным распространением
Платформа: Windows
Векторы: Компрометация украинского ПО для бухгалтерии (M.E.Doc), эксплуатация EternalBlue (MS17-010)
Хотя NotPetya внешне напоминал ransomware (шифровал MBR и требовал выкуп в Bitcoin), его истинная цель — деструктивное воздействие. Шифрование было необратимым: ключи не сохранялись.
Методы распространения:
- Использовал EternalBlue (утечка инструментов NSA) для горизонтального перемещения по сети.
- Применял инструменты
PsExecиWMICдля удалённого запуска. - Атаковал сервисы репликации домена через
lsass.exe.
Ущерб превысил $10 млрд; пострадали FedEx, Maersk, Merck и другие транснациональные компании. NotPetya показал, как локальная атака может вызвать глобальные цепные реакции в цифровой экономике.
Emotet (2014–2021)
Тип: Модульный троян, loader, ботнет
Платформа: Windows
Векторы: Фишинговые вложения (макросы в Word), распространение через заражённые устройства в сети
Изначально созданный как банковский троян, Emotet эволюционировал в «вредонос-как-услуга» (Malware-as-a-Service). Он не наносил прямого вреда, но:
- Собирал учётные данные и сессии.
- Загружал вторичные угрозы: TrickBot, QakBot, Ryuk.
Технические достижения:
- Использовал шифрование TLS с жёстко закодированными сертификатами.
- Применял антиотладку и виртуализацию.
- Динамически обновлял список C2-серверов через зашифрованные конфигурации.
Emotet был деактивирован в январе 2021 года в результате международной операции (Europol, ФБР, японская полиция). Его архитектура остаётся эталоном для современных модульных угроз.
Mirai (2016)
Тип: Ботнет для DDoS-атак
Платформа: Linux (встраиваемые устройства, IoT)
Векторы: Брутфорс по умолчанию заданным учётным данным (admin:admin, root:12345 и т.п.)
Mirai компрометировал миллионы маршрутизаторов, IP-камер и DVR-устройств, создав самый мощный на тот момент ботнет.
Особенности:
- Исходный код опубликован в открытых источниках, что породило сотни клонов.
- Использовал простейшие методы, но масштаб компенсировал низкую сложность.
- Вызвал масштабные DDoS-атаки против DNS-провайдера Dyn, нарушив работу Twitter, Netflix, Reddit.
Mirai обнажил критическую уязвимость IoT-экосистемы: отсутствие базовой гигиены безопасности в устройствах массового потребления.